package com.yangchuang.openpicture.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.yangchuang.openpicture.pojo.UserFans;

import java.util.List;

/**
 * 用户粉丝服务接口
 * 
 * 该服务提供用户关注和粉丝相关的功能，包括关注用户、取消关注、获取关注列表、获取粉丝列表等。
 * 
 * @author naiyi
 * @version 1.0
 * @since 2025-09-01
 */
public interface UserFansService extends IService<UserFans> {

    /**
     * 关注用户
     * 
     * @param userId 当前用户ID
     * @param followUserId 要关注的用户ID
     * @return 关注状态（1=关注成功，0=取消关注）
     */
    Integer followUser(Long userId, Long followUserId);

    /**
     * 取消关注用户
     * 
     * @param userId 当前用户ID
     * @param followUserId 要取消关注的用户ID
     * @return 取消关注状态（0=取消关注成功）
     */
    Integer unfollowUser(Long userId, Long followUserId);

    /**
     * 检查用户是否已关注另一个用户
     * 
     * @param userId 当前用户ID
     * @param followUserId 要检查的用户ID
     * @return 是否已关注（true=已关注，false=未关注）
     */
    Boolean isFollowing(Long userId, Long followUserId);

    /**
     * 获取用户关注列表
     * 
     * @param userId 用户ID
     * @return 关注的用户ID列表
     */
    List<Long> getFollowingList(Long userId);

    /**
     * 获取用户粉丝列表
     * 
     * @param userId 用户ID
     * @return 粉丝用户ID列表
     */
    List<Long> getFansList(Long userId);

    /**
     * 获取用户关注数量
     * 
     * @param userId 用户ID
     * @return 关注数量
     */
    Long getFollowingCount(Long userId);

    /**
     * 获取用户粉丝数量
     * 
     * @param userId 用户ID
     * @return 粉丝数量
     */
    Long getFansCount(Long userId);
}
